package historia_clinica.servlet;

import historia_clinica.bean.HistoriaClinicaDTO;
import historia_clinica.service.ServicioMantenimientoHistoriaClinica;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class GestionaHistoriaClinicaServlet
 */
public class GestionaHistoriaClinicaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ServicioMantenimientoHistoriaClinica servicio = new ServicioMantenimientoHistoriaClinica();   
	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String voperacionHC = request.getParameter("operacionHC");
		System.out.println(voperacionHC);
		if(voperacionHC.equals("Registrar")){
			this.registrar(request,response);
		}
		if(voperacionHC.equals("Listar") || voperacionHC.equals("Cancelar")){
			this.listar(request,response);
		}
		if(voperacionHC.equals("cargarModificacion")){
			this.cargarModificacion(request,response);
		}
		if(voperacionHC.equals("Modificar")){
			this.modificar(request,response);
		}
		if(voperacionHC.equals("Eliminar")){
			this.eliminar(request,response);
		}
		if(voperacionHC.equals("Buscar")){
		    this.buscar(request,response);
		}
		if(voperacionHC.equals("ObtenerHC")){
		    this.obtenerHC(request,response);
		}

	}
	

	private void obtenerHC(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		String vnun_hc = request.getParameter("num_Hc");
		String vnombre = request.getParameter("nom_Pac");
		String vapellidoPP = request.getParameter("ape_Pat_Pac");
		String vapellidoMP = request.getParameter("ape_Mat_Pac");
		HistoriaClinicaDTO objHC = new HistoriaClinicaDTO();
		objHC.setNum_Hc(vnun_hc);
		objHC.setNom_Pac(vnombre);
		objHC.setApe_Pat_Pac(vapellidoPP);
		objHC.setApe_Mat_Pac(vapellidoMP);
	
		try {
			request.setAttribute("hc", objHC);
			request.getRequestDispatcher("/registrarOrdenAtencionEmergencia.jsp").forward(request, response);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void buscar(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		String vnun_hc = request.getParameter("num_hc");
		String vnombre = request.getParameter("nombresP");
		String vapellidoPP = request.getParameter("apellidoPP");
		String vapellidoMP = request.getParameter("apellidoMP");
		HistoriaClinicaDTO objHC = new HistoriaClinicaDTO();
		objHC.setNum_Hc(vnun_hc);
		objHC.setNom_Pac(vnombre);
		objHC.setApe_Pat_Pac(vapellidoPP);
		objHC.setApe_Mat_Pac(vapellidoMP);
		try {
			List<HistoriaClinicaDTO> lista= servicio.buscar(objHC);
			for (HistoriaClinicaDTO historiaClinicaDTO : lista) {
				System.out.println(historiaClinicaDTO.getNum_Hc()+historiaClinicaDTO.getNom_Pac());
			}
			request.setAttribute("hcs", lista);
			request.getRequestDispatcher("/buscarHC.jsp").forward(request, response);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

	private void modificar(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		String vnun_hc = request.getParameter("num_hc");
		  String vnombre = request.getParameter("nombresP");
		  String vapellidoPP = request.getParameter("apellidoPP");
		  String vapellidoMP = request.getParameter("apellidoMP");
		  String vsexo= request.getParameter("id_sexo");
		  String vfechaNaci =request.getParameter("fechaNacimiento");
		  String vtelefono =request.getParameter("telefono");
		  String vdireccion =request.getParameter("direccion");
		  String vdocumento =request.getParameter("documento");
		  String vtdocumento =request.getParameter("tipdoc");
		  String vdepartamento= request.getParameter("depa");
		  String vtprovincia= request.getParameter("prov");
		  String vdistrito= request.getParameter("distri");
		  
		  try {
		   HistoriaClinicaDTO objHC = new HistoriaClinicaDTO();
		   
		   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		   
		   objHC.setNum_Hc(vnun_hc);
		   objHC.setNom_Pac(vnombre);
		   objHC.setApe_Pat_Pac(vapellidoPP);
		   objHC.setApe_Mat_Pac(vapellidoMP);
		   objHC.setSexo_Pac(vsexo);
		   objHC.setFec_Nac_Pac(sdf.parse(vfechaNaci));
		   objHC.setTefl_Pac(vtelefono);
		   objHC.setDir_Pac(vdireccion);
		   objHC.setNum_Doc(vdocumento);
		   objHC.setCod_Tipdocu(vtdocumento);
		   objHC.setCod_Depa(vdepartamento);
		   objHC.setCod_Prov(vtprovincia);
		   objHC.setCod_Distri(vdistrito);
		   
		   objHC.setUsuario("u0001");
		   objHC.setTip_ope("update");
		   
		   servicio.modificarHistoriaClinica(objHC);
		   request.setAttribute("mensaje_modificar",vnun_hc);
		      listar(request,response);
		 
		  } catch (Exception e) {
		   e.printStackTrace();
		  }
	}

	private void eliminar(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
		 String vnumero = request.getParameter("num_Hc");
		  HistoriaClinicaDTO historicaclinica= new HistoriaClinicaDTO();
		  historicaclinica.setNum_Hc(vnumero);

		  try {
		   String resultado = servicio.eliminar(historicaclinica);
		   if(resultado.equals("exito")){
		   request.setAttribute("mensaje_eliminar", vnumero);
		      listar(request,response);}
		   else{
		      request.setAttribute("mensaje_eliminar_fallo", "No se puede deshabilitar la historia clinica, porque esta asociada a ordenes de atencion de emergencias");
		      listar(request,response);
		   }
		  } catch (Exception e) {
		   // TODO: handle exception
		   e.printStackTrace();
		  }
	
		
	}


	private void cargarModificacion(HttpServletRequest request,HttpServletResponse response) {

				String vnumero = request.getParameter("num_Hc");
				HistoriaClinicaDTO historicaclinica= new HistoriaClinicaDTO();
				historicaclinica.setNum_Hc(vnumero);
				try {
					
					historicaclinica=servicio.validaHC(historicaclinica);
					request.setAttribute("hc", historicaclinica);
					request.getRequestDispatcher("/modificarHC.jsp").forward(request, response);	
					
				} catch (Exception e) {
					e.printStackTrace();
				}
	}


	private void listar(HttpServletRequest request, HttpServletResponse response) {
								
				List<HistoriaClinicaDTO> lashistoriasclinicas=null;
						
				try {
					lashistoriasclinicas=servicio.listadoHC();
					request.setAttribute("hcs", lashistoriasclinicas);
					request.getRequestDispatcher("/mantenerHC.jsp").forward(request, response);
					}
				catch (Exception e) {
					e.printStackTrace();
				}
	}

	private void registrar(HttpServletRequest request,HttpServletResponse response) {
		
		String vnombre = request.getParameter("nombresP");
		String vapellidoPP = request.getParameter("apellidoPP");
		String vapellidoMP = request.getParameter("apellidoMP");
		String vsexo= request.getParameter("id_sexo");
		String vfechaNaci	=request.getParameter("fechaNacimiento");
		String vtelefono	=request.getParameter("telefono");
		String vdireccion	=request.getParameter("direccion");
		String vdocumento	=request.getParameter("documento");
		String vtdocumento	=request.getParameter("tipdoc");
		String vdepartamento= request.getParameter("depa");
		String vtprovincia= request.getParameter("prov");
		String vdistrito= request.getParameter("distri");

		try {
			HistoriaClinicaDTO objHC = new HistoriaClinicaDTO();
			
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			
			objHC.setNom_Pac(vnombre);
			objHC.setApe_Pat_Pac(vapellidoPP);
			objHC.setApe_Mat_Pac(vapellidoMP);
			objHC.setSexo_Pac(vsexo);
			objHC.setFec_Nac_Pac(sdf.parse(vfechaNaci));
			objHC.setTefl_Pac(vtelefono);
			objHC.setDir_Pac(vdireccion);
			objHC.setNum_Doc(vdocumento);
			objHC.setCod_Tipdocu(vtdocumento);
			objHC.setCod_Depa(vdepartamento);
			objHC.setCod_Prov(vtprovincia);
			objHC.setCod_Distri(vdistrito);
			
			String strCodigo = servicio.registrarHistoriaClinica(objHC);
			request.setAttribute("mensaje_registrar",strCodigo);
		    listar(request,response);
			} catch (Exception e) {
			e.printStackTrace();
		}	
	}
}
